#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
超级简化版小米便签导出工具
直接尝试连接Chrome并导出便签，不进行严格的环境检测
"""

import os
import sys
import json
import time
from datetime import datetime
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


def main():
    print("超级简化版小米便签导出工具")
    print("="*50)
    print("注意：请确保已在Chrome浏览器中登录小米云服务并打开便签页面")
    
    # ChromeDriver路径
    driver_path = "C:\\Program Files\\chrome\\chromedriver.exe"
    
    # 检查ChromeDriver文件是否存在
    if not os.path.exists(driver_path):
        print(f"❌ ChromeDriver文件不存在: {driver_path}")
        print("请修改脚本中的driver_path变量为正确的ChromeDriver路径")
        input("按Enter键退出...")
        sys.exit(1)
    
    # 尝试连接Chrome浏览器（这里我们不指定调试端口，让Selenium创建新的会话）
    print("\n正在尝试启动Chrome浏览器并连接...")
    
    try:
        # 创建Chrome选项
        chrome_options = Options()
        chrome_options.add_argument("--start-maximized")
        chrome_options.add_argument("--disable-gpu")
        chrome_options.add_argument("--no-sandbox")
        
        # 创建WebDriver服务
        service = Service(executable_path=driver_path)
        
        # 启动Chrome浏览器
        driver = webdriver.Chrome(service=service, options=chrome_options)
        print("✅ Chrome浏览器启动成功")
        
        # 导航到小米云服务便签页面
        print("\n正在导航到小米云服务便签页面...")
        driver.get("https://i.mi.com/note")
        
        # 提示用户手动登录
        print("\n请在打开的浏览器中完成以下操作：")
        print("1. 登录您的小米云服务账号")
        print("2. 确保能看到您的便签列表")
        print("3. 然后返回此窗口按Enter键继续...")
        input()
        
        # 刷新页面确保便签列表已加载
        driver.refresh()
        time.sleep(3)
        
        # 尝试获取便签列表
        print("\n正在尝试获取便签列表...")
        try:
            # 等待便签列表加载
            wait = WebDriverWait(driver, 30)
            wait.until(EC.presence_of_element_located((By.CLASS_NAME, "note-list-item")))
            
            # 获取所有便签元素
            note_elements = driver.find_elements(By.CLASS_NAME, "note-list-item")
            print(f"✅ 找到 {len(note_elements)} 条便签")
            
            # 创建导出目录
            output_dir = "./exports"
            if not os.path.exists(output_dir):
                os.makedirs(output_dir)
            
            # 导出便签
            notes_data = []
            for i, note_element in enumerate(note_elements, 1):
                try:
                    # 点击便签打开详情
                    note_element.click()
                    time.sleep(1)
                    
                    # 提取标题和内容
                    title = "无标题"
                    content = ""
                    
                    # 尝试获取标题
                    try:
                        title_element = driver.find_element(By.CLASS_NAME, "note-editor-title")
                        if title_element.text.strip():
                            title = title_element.text.strip()
                    except:
                        pass
                    
                    # 尝试获取内容
                    try:
                        content_element = driver.find_element(By.CLASS_NAME, "note-editor-content")
                        content = content_element.text.strip()
                    except:
                        pass
                    
                    # 添加到数据列表
                    note_data = {
                        "id": i,
                        "title": title,
                        "content": content,
                        "export_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                    }
                    notes_data.append(note_data)
                    
                    # 显示进度
                    print(f"   已提取便签 {i}/{len(note_elements)}: {title[:20]}...")
                    
                except Exception as e:
                    print(f"⚠️ 提取便签 {i} 时出错: {str(e)}")
                    continue
            
            # 保存为JSON文件
            timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
            file_path = os.path.join(output_dir, f"mi_notes_{timestamp}.json")
            
            with open(file_path, "w", encoding="utf-8") as f:
                json.dump(notes_data, f, ensure_ascii=False, indent=2)
            
            print(f"\n✅ 导出完成！")
            print(f"已将 {len(notes_data)} 条便签导出到: {file_path}")
            
        except Exception as e:
            print(f"❌ 获取便签列表失败: {str(e)}")
            print("请确认您已成功登录并能看到便签列表")
        
        # 关闭浏览器
        driver.quit()
        
    except Exception as e:
        print(f"❌ 启动Chrome浏览器失败: {str(e)}")
        print("请检查ChromeDriver路径是否正确，以及ChromeDriver版本是否与Chrome浏览器版本匹配")
    
    input("\n按Enter键退出...")


if __name__ == "__main__":
    main()